package pri.zxx.learndemo.javabase.listdemo;

import org.junit.jupiter.api.Test;

import java.math.BigDecimal;

public class RecursionTest {

	/**
	 * 阶乘 n! = 1*2*3*4....*(n-2)*(n-1)*n
	 */
	@Test
	public void recursion() {
		System.out.println(f(BigDecimal.valueOf(15)));
		String abcd = "abcd";
		pr(abcd, 0);
	}

	/**
	 * 阶乘递归
	 */
	public BigDecimal f(BigDecimal n) {
		if (n.compareTo(BigDecimal.ZERO) == 0) {
			return BigDecimal.ZERO;
		}
		if (n.compareTo(BigDecimal.ONE) == 0) {
			return BigDecimal.ONE;
		}
		return n.multiply(f(n.subtract(BigDecimal.ONE)));
	}

	public void pr(String s, int index) {
		if (index >= s.length()) {
			return;
		}
		pr(s, index + 1);
		System.out.print(s.charAt(index));
	}
}
